package co.com.inversiones.xyz.ltda.dao.impl;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import co.com.inversiones.xyz.ltda.dao.UsuarioDao;
import co.com.inversiones.xyz.ltda.dto.Usuario;
import co.com.inversiones.xyz.ltda.exception.DaoException;

public class UsuarioDaoImpl extends HibernateDaoSupport implements UsuarioDao {

	/**
	 * Metodo para insertar un nuevo usuario en base de datos.
	 * 
	 * @param usuario
	 * @throws DaoException
	 */
	@Override
	public void guardarUsuario(Usuario usuario) throws DaoException {

		Session sesion = null;
		try {
			sesion = getSession();

			sesion.save(usuario);

		} catch (HibernateException e) {

			throw new DaoException("Error incertando usuario con nombre: "
					+ usuario.getNombreResponsable(), e);

		}

	}

	/**
	 * Metodo que consulta los datos de un usuario por su correo.
	 * 
	 * @param correo
	 *            que identifica al usuario en el sistema.
	 * @return todos los datos del usuario
	 * @throws DaoException
	 */
	@Override
	public Usuario getUsuario(String correo) throws DaoException {
		Usuario usuario = new Usuario();

		Session sesion = null;
		try {
			sesion = getSession();

			usuario = (Usuario) sesion.createCriteria(Usuario.class)
					.add(Restrictions.eq("correo", correo)).uniqueResult();
		} catch (HibernateException e) {
			throw new DaoException("Error consultado Usuario: " + correo, e);
		}

		return usuario;
	}

}
